########################################################################################
@CLASS
Interface
########################################################################################

########################################################################################
@init[]
########################################################################################

#	Data
^use[/../sensus/helpers/data.p]
$oData[^Data::init[]]

########################################################################################



########################################################################################
@dictionary[sTable][sTable;t]
########################################################################################

^if( def $form:name ){
	^if( !^oData.exist[$sTable][ name = '$form:name' ] ){
		^oData.insert[$sTable]
	}
}

^if( def $form:delete ){
	$t[^table::sql{ SELECT id FROM $sTable }]
	^t.menu{
		^if( def $form:[delete.$t.id] ){ ^void:sql{ DELETE FROM $sTable WHERE id = $t.id } }
	}
}

^if( def $form:save ){
	$t[^table::sql{ SELECT id FROM $sTable }]
	^t.menu{ ^oData.update[$sTable][ id = $t.id ][ $.name[$form:[name.$t.id]] ] }
}


$t[^table::sql{ SELECT id, name FROM $sTable ORDER BY name }]
<form method="post">
	^if( $oData.duplicate ){ <div class="red">Такая запись уже есть в базе</div> }
	<table>
		^t.menu{
			<tr>
				<td class="aRight">$t.id</td>
				<td><input type="checkbox" name="delete.$t.id" /></td>
				<td><input name="name.$t.id" value="$t.name"
					^if( $oData.duplicate == $t.id ){ style="border-color: red" }
				 /></td>
			</tr>
		}
		<tr>
			<td colspan="3" class="aRight"><input name="name" /></td>
			<td><input type="submit" name="add" value="Добавить" /></td>
		</tr>
		<tr>
			<td colspan="3" class="aRight">
				<input type="submit" name="delete" value="Удалить" />
				<input type="submit" name="save" value="Сохранить" />
			</td>
		</tr>
	</table>	
</form>

########################################################################################



########################################################################################
@dataAdder[sName;sTarget][sName;sTarget]
########################################################################################

$result[<input name="$sName" class="dataAdder focused" url="$request:uri" target="$sTarget" />]

########################################################################################



########################################################################################
@truncateLink[h][h;result]
########################################################################################

^if(def $form:truncateTable){ ^oData.truncate[$sTable] }

$result[<span
	class="truncateLink"
	table="$h.table"
	confirmText="$h.confirm"
	url="$request:uri"
>$h.description</span>]

########################################################################################



########################################################################################
@delete[h][h;result]
########################################################################################

$result[<span class="interfaceDelete" onclick="deleteItem( ^$('$h.targetId'), $h.id )">$h.label</span>]

########################################################################################



########################################################################################
@editor[h][h;result]
########################################################################################

$result[
	<span
		class="interfaceEditor"
	>$h.value</span>
	<input
		class="interfaceEditor hidden"
		name="$h.name"
		value="$h.value"
	/>
	<input type="hidden" value="$h.id" />
]

########################################################################################



########################################################################################
@select[h][h]
########################################################################################

^if( !$h.selected ){ $h.selected(0) }

$result[
	<select name="$h.name" id="$h.name">
		<option value="0" ^if( $h.reset ){ selected="selected" }>- не указано -</option>
		^if( def $h.table ){
			^h.table.menu{
				<option
					value="$h.table.id"
					^if( !$h.reset && ( $h.table.id == $h.selected || $h.table.id == $form:[$h.name] ) ){ selected="selected" }
				>$h.table.name</option>
			}
		}
	</select>
]

########################################################################################